package com.chpro.scsw.service.impl;



import java.util.List;

import com.chpro.scsw.dao.BaseDao;
import com.chpro.scsw.service.BaseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * 
 * Title:  bestpay业务管理系统
 * Description:Service基类实现类封装CRUD方法
 * Company: 
 * @author 
 * create date: 2014-04-16
 * @version 1.0
 */
@Service("baseService")
public class BaseServiceImpl<T>implements BaseService<T> {
	protected static Logger log = LoggerFactory.getLogger(BaseServiceImpl.class);
	@Autowired 
	private BaseDao<T> baseDao;

	/**
	 * 增加
	 * @param classMethod mybatis配置文件里面对应的命名空间+要执行的sql语句id
	 * @param entity 封装数据的实体
	 * @return 返回操作结果
	 * @throws Exception 抛出所有异常
	 */
	public boolean add(String classMethod, T entity) throws Exception {
		return baseDao.add(classMethod, entity);
	}
    
	/**
	 * 修改
	 * @param classMethod mybatis配置文件里面对应的命名空间+要执行的sql语句id
	 * @param entity 封装数据的实体
	 * @return 返回操作结果
	 * @throws Exception 抛出所有异常
	 */
	public boolean edit(String classMethod, T entity) throws Exception {
		return baseDao.edit(classMethod, entity);
	}

	/**
	 * 删除
	 * @param classMethod mybatis配置文件里面对应的命名空间+要执行的sql语句id
	 * @param entity 封装数据的实体
	 * @return 返回操作结果
	 * @throws Exception 抛出所有异常
	 */
	public boolean remove(String classMethod, T entity) throws Exception {
		return baseDao.remove(classMethod, entity);
	}
	
	/**
	 * 批量删除
	 * @param classMethod mybatis配置文件里面对应的命名空间+要执行的sql语句id
	 * @param list 要删除的数据集合
	 * @return 返回操作结果
	 * @throws Exception 抛出所有异常
	 */
	public boolean batchDelete(String classMethod,List<String>list) throws Exception{
		return baseDao.batchDelete(classMethod, list);
	}
	
	/**
	 * 批量增加
	 * @param classMethod mybatis配置文件里面对应的命名空间+要执行的sql语句id
	 * @param list 要增加的数据集合
	 * @return 返回操作结果
	 * @throws Exception 抛出所有异常
	 */
	public boolean batchAdd(String classMethod,List<T>list) throws Exception{
		return baseDao.batchAdd(classMethod, list);
	}

	/**
	 * 以id为条件查找对象
	 * @param classMethod mybatis配置文件里面对应的命名空间+要执行的sql语句id
	 * @param entity 封装数据的实体
	 * @return 返回查询结果
	 * @throws Exception 抛出所有异常
	 */
	public T get(String classMethod, T entity) throws Exception {
		return baseDao.get(classMethod, entity);
	}

	/**
	 * 查询
	 * @param classMethod mybatis配置文件里面对应的命名空间+要执行的sql语句id
	 * @param entity 封装数据的实体
	 * @return 返回查询结果
	 * @throws Exception 抛出所有异常
	 */
	public List<T> getAllList(String classMethod, T entity) throws Exception {
		return baseDao.getAllList(classMethod, entity);
	}

	/**
	 * 查询数量
	 * @param classMethod mybatis配置文件里面对应的命名空间+要执行的sql语句id
	 * @param entity 封装数据的实体
	 * @return 返回查询结果
	 * @throws Exception 抛出所有异常
	 */
	public int getCount(String classMethod, T entity) throws Exception {
		return baseDao.getCount(classMethod, entity);
	}	
	
	
	 
	
	public List<T> getAllListByIds(String classMethod, List<String> params) throws Exception{
		return baseDao.getAllListByIds(classMethod, params);
	}

	
	/**
	 * 获取单个值 如sum、count等
	 * @param queryClassMethod  queryClassMethod	mybatis配置文件里面对应的命名空间+要执行的sql语句id
	 * @param entity 查询条件实体
	 * @return
	 * @throws Exception
	 */
	public String getOneResult(String queryClassMethod,T entity) throws Exception{
		return baseDao.getOneResult(queryClassMethod, entity);
	}

}
